これ以下は主に「FreeBSD」においてのネットワークの確認と設定となります。
おなじUNIXでも、Linuxとは違う場合があります。注意してください。
なお、FreeBSDにおいて、基本的なネットワークの設定は
すべて[/etc/rc.conf]から行う(行える)という事を必ず覚えておいてください。
初期設定で色々な項目を設定しましたが、
そのほとんどは[/etc/rc.conf]にて設定できる内容です。
まず、これを実行してみてください。
PING localhost.mydomain.com (127.0.0.1) :
56 bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64
time=0.226 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64
time=0.055 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64
time=0.048 ms |
すると、こういったものが延々と表示されると思います。
これはキーボードより[CTRL]+[C]で停止させない限り終わりません。
このpingというのは、ネットワークが動作しているか調べる、もっとも基本的な手段だと思ってください。
この時、相手を示す記号として使用できるのは[ドメイン名]と「IPアドレス」です。
今回は、とりあえず絶対に存在しないといけない自分自身に向かってpingを実行しました。
これで上以外のものが表示されるという事態はまず起こらないはずです。
[time=??? ms]という項目があると思いますが、
これは相手からの応答時間であり、ネットワーク環境によって大きく左右します。
(今回の場合、自分自身にpingを実行しているわけで、ものすごく速いのは当然ですが…)
他の項目[icmp_seq]はpingを実行した回数。
[ttl]に関しては、ネットワーク状況によって変化しますが気にしなくていいです。
大切なのは「64 byes from 相手のIPアドレス」であり、
「相手からちゃんと応答があった」と言う事です。
ここで使用した[localhost]とは、決まりによって、自分自身として設定されている名前です。
[localhost]のIPアドレスは[127.0.0.1]で固定されています。
これは「ループバックアドレス」と呼ばれています。
pingは基本的に指定されたIPアドレスに向けて動作します。
ドメイン名でサーバー名を指定した場合でも、
一旦相手のドメイン名から対応するIPアドレスを調べてから、
そのIPに向かって動作確認(パケットを送る)するわけです。
つまり、以下でもいいわけです。
同様の結果になる事を確認して下さい。
存在しないIPに向けて(この例では192.168.1.100)Pingを実行すると
Server# ping 192.168.1.100
PING 192.168.1.100 (192.168.1.100) : 56 bytes
ping : sendto : Host is down
ping : sendto : Host is down | といった結果になります。
ネットワークの問題によって[No route to host]とか様々なメッセージは出ますが、とりあえず
64 bytes from 127.0.0: icmp_seq=? ttl=??
time=?.??? ms |
この行が表示されないと、Pingを実行した相手サーバーと、
IPによる接続が基本的に確立されていないという事になります。
(それは物理的なものかも知れないし、ネットワークの設定によるものかも知れません。
そしてフィルターによってPingが届かないサーバーといったものもインターネットには存在します)
次はこれを実行してください
Server# ping www.yahoo.co.jp |
説明するまでもなくヤフーに向かってPingを実行しているわけです。
もしすでにDHCPによって正常にネットワーク情報を取ってこれているならば、
Server# ping www.yahoo.co.jp
PING www.yahoo.co.jp (211.14.15.5) : 56 bytes
64 bytes from 211.14.15.5: icmp_seq=0 ttl=241
time=7.713 ms
64 bytes from 211.14.15.5: icmp_seq=1 ttl=241
time=27.573 ms |
こういったものが表示されると思います。
しかし、そうでなかった場合、
Server# ping www.yahoo.co.jp
ping:cannot resolve www.yahoo.co.jp: Host
name lookup faiure |
と表示して停止します。
これは「ドメイン名からIPを調べるのに失敗しました」と表示しています。
IPアドレスが分かっていないと、pingは実行できません。
自鯖にネームサーバーの設定が正しくされていない場合、
対応したIPアドレスが調べられないわけであり、このエラーメッセージが表示されます。
すでにインターネット回線が存在していて、
プロバイダのモデムとサーバーをちゃんと接続しているにもかかわらず、
ここでIP等の情報を取ってこれない場合、ここから先の作業には進まない方が賢明です。
むしろインターネットに接続出来ない以上、進んでも意味がありません。
プロパイダから情報をDHCPで取ってこれるはずなのに、このメッセージが表示されてしまった場合、
DHCPによるネットワーク情報の取得は失敗しています。
今までDHCPで情報を取得してWindowsマシンからインターネット接続が出来ていたのであれば、
この段階で、絶対にFreeBSDでも接続が可能になるはずです。
モデムを再起動させたり、モデムと接続するLANポートを変更したり、
時にはサーバーを再起動させたりもして、正常に動作するようにしましょう。
(最低でも、ヤフーにpingが通るまで)
それでも駄目な場合は、インストール時の初期設定で
「DHCPを使用する」と指定し忘れた可能性があります。
この場合、[/etc/rc.conf]の設定の確認、時には修正した方がいいでしょう。
→その場合、こちらを見てください
この段階でサーバーとクライアントがHUBを介してきちんと繋がっていたとしても、
まだクライアントはインターネットへ接続できません。
あくまでインターネットへ接続出来ている必要があるのは自鯖のみです。
◆ifconfig…ネットワークインターフェイスの確認 |
これを実行してみてください。
表示されるのは、現在このサーバーが認識している…つまり使用可能なネットワークインターフェイスです。
それに加えて、その全ての設定まで表示されると思います。
LANボードがきちんと認識されているならば、ここに表示されています。
なお、Windowsでは良く似たコマンドとして[ipconfig]が存在します。
[if]じゃなくて[ip]なので注意してください(汗)。
このままではごちゃごちゃと情報が多くて見難いでの、
使用可能なネットワークインターフェイスの一覧のみを表示してみます。
すると、
Server# ifconfig -l
lnc0 fxp0 faith0 lo0 ppp0 sl0 |
このように、現在このマシンで使用可能なインターフェイス一覧が表示されます。
(使用しているLANボードによって表示は変わります)
今回の場合、[faith0]以下は関係ありません。
ネットワークインターフェイスがきちんとFreeBSDのカーネルによって認識されているかどうか、
確認すべき項目は、一番前から2つのみです。
なぜ2つかというと、自鯖に2つのLANポートがあることを前提に説明しているからです。
もし1つしかなければ、確認する項目は1つのみです。
ここできちんと表示されているのであれば、
そのインターフェイスは「使用可能」な状態になっている、と言えます。
ここで表示されていなければ、それはカーネルが対応していないか、
カーネル再構築時にドライバを組み込み忘れたか、LANポートが故障しているか接続不良かのどれかです。
認識されたネットワークインターフェイスの中で、その一つだけ情報を知りたい場合、
といった風に指定してやれば、[lnc0]インターフェイスに関する情報のみ確認できます。
[ifconfig]を使用したネットワークインターフェイスの確認は以上です。
じつは、この[ifconfig]はネットワークインターフェイスの動作確認だけはなく、
ネットワークインターフェイスにIPアドレスの設定をする機能も持っています。
便利ですね。
しかし、これ以降IPアドレスの設定する場合、
どうしても自分のネットワーク環境を分析しないといけません。
IPアドレスというものは様々な細かい取り決めに従って動いており、
自分のネットワーク(クライアントとサーバー)もその取り決めに合わせないと、
正常に動作しないからです。
IPアドレスの設定は一旦ここで保留としまして、
次からはこの自宅のネットワーク環境を考えて、IPアドレスを決めていきたいと思います。
ここで「自宅イントラネット計画」のページで使用した画像を持ってきます。
ただし、その図に修正を入れてあります。
(インターネット空間)
-----------------------プロパイダ------------------------
||
プロバイダのの回線→|| ←プロバイダへの回線
||
+----------+
| モデム |
+----------+
|
DHCPで取得
|
[lnc0]
+------------------------+
| 自鯖(インターネットサーバー) |
| (DHCPで取得したIP) |
+------------------------+ |
+------------------------+
| 自鯖(インターネットサーバー) |
| (192.168.1.254) |
+------------------------+
[fxp0]
|
+-----------■-----------+
| HUB |
+--------------+ +--------------+
| Windowsマシン | | Windowsマシン |
| (192.168.1.1) | | (192.168.1.2) |
+--------------+ +--------------+
クライアント1 クライアント2 |
ネットワークインターフェイスに関しては、
サーバーに使用しているLANのメーカーによって違うものが認識されていると思います。
ここではそれを[lnc0][fxp0]と仮定して進めていきます。
ここまでの説明をきちんと読んで理解していただいたのであるならば、
なぜ図が「自鯖(インターネットサーバー)」の部分で2つに分割されているのか。
追加された部分である[lnc0][fxp0]の意味も理解していただけると思います。
なお、クライアントマシンに関しては、
WindowsでLANが使用可能(デバイスドライバが組み込まれている)ならそれでいいので、
省略してあります。
◆IPアドレス計画…プライベートIPアドレスには何を使う? |
ここではまず、ローカルネットワークである自鯖と、
Windowsマシン2台に関して(図で言うと下半分)話を進めていきます。
ここでは、実は[127.0.0.1]以外のどんなIPアドレスを使用してもいいのですが、
慣例に従ってクラスCアドレスを使用しています。
クラスCアドレスに関しての詳しい説明はしませんが、
小規模ローカルネットワークに使用する推奨された規定だと思ってください。
・自鯖(インターネットサーバーには[192.168.1.254]を使用する。
・クライアント2台にはそれぞれ[192.168.1.1]と[192.168.1.2]を使用する。
こう決めました。
本当は「192.168.0.???」の方が良いのかも知れませんが、
0を使用するのは個人的に「なんだか落ち着かない」ため、「192.168.1.???」を使用しています。
IPアドレスには、他にも「ネットマスク」といったものも決めておかなければなりませんが、
これは同じネットワークでは同じ値を使用するという規定があります。
・この3台のマシンのネットマスクを[255.255.255.0]とする。
ここではこう決めておきます。
このクラスCのIPアドレスとネットマスクを使用することにより、
実にクライアントが254台まで設置できます。
ネットワークを[192.168.1.?]、ネットマスクを[255.255.255.0]とした場合、
IPアドレスの規定により[192.168.1.0]と[192.168.1.255]は使用できません。
なので、この[192.168.1.1]〜[192.168.1.254]までの
254個のIPアドレスをネットワークに必要なマシンと機器に振り分けて使用するわけです。
ルーターといった、そのネットワークの出入口に当たる機器には、
これも慣例として、使用可能な中で一番最後のIPアドレスを使用します。
別に違うIPアドレスでもいいのですが、ここではこれを使用するものとして話を進めていきます。
インターネットに接続するために設定しなければならない情報は、大きく分けて3つあります。
・IPアドレス(ネットマスクも含む)
・ルーター(ゲートウェイ)のIPアドレス
・ネームサーバーのIPアドレス
この内、どれが欠けてもインターネットと接続する事は不可能になります。
ネームサーバーが設定されてない場合、
IPアドレスだけでいいのならばインターネットが出来ますが。
しかしその場合、インターネットのありとあらゆる場所を指定するのに「IPアドレスしか」使用できません。
ただし、例外としてProxyサーバーを自鯖に設置して、
クライアントのブラウザに、そのIPアドレス(この場合[192.168.1.254:ポート番号])を指定すれば、
IPアドレスだけでもそのブラウザを介したHP閲覧だけは可能になります。
今回は、その例外はとりあえず除外しておきます。
詳しい事を知りたい方は、Proxyのページを見てください。
自鯖がすでにインターネットに接続しているという事は、
それはすなわち「この3つの情報をすでに持っている」という事になります。
DHCPとは、自動的にクライアント(これはプロバイダから見た自鯖の事)のマシンに
この情報を与える機能だからです。
次に、クライアントにおける「ルーター(ゲートウェイ)」とは、
自身が接続されているネットワークにおける出口となります。
それ以上先は、ルーターを経由しないとクライアントは知ることが出来ないからです。
なのでこの場合、クライアントのルーター(ゲートウェイ)IPアドレスは自鯖のIPアドレスとなります。
これらを踏まえて、一度まとめて見たいと思います。
WAN(インターネット)側
名前 |
自鯖(lnc0) |
IPアドレス |
DHCPで取得 |
(ネットマスク) |
DHCPで取得 |
ルーター(ゲートウェイ) |
DHCPで取得 |
ネームサーバー |
DHCPで取得 |
ローカルネットワーク側
名前 |
自鯖(fxp0) |
クライアント1 |
クライアント2 |
IPアドレス |
192.168.1.254 |
192.168.1.1 |
192.168.1.2 |
(ネットマスク) |
255.255.255.0 |
255.255.255.0 |
255.255.255.0 |
ルーター(ゲートウェイ) |
WAN側の設定を使用 |
192.168.1.254 |
192.168.1.254 |
ネームサーバー |
WAN側の設定を使用 |
? |
? |
ここで一つ問題が起こりました。
クライアントのネームサーバーのIPアドレスで、何を指定していいのか分からないのです。
解決方法は2つあります。
1つは、プロバイダがDHCPで自鯖に与えているネームサーバーのIPアドレスを確認して、
それをクライアントに設定する。
もう一つは、自鯖でネームサーバーを動かす。
しかしこの場合、自鯖で「ネームサーバーの機能を持ったサービス」…DNSを起動させないといけません。
多少作業がややこしくなります。
このどちらに対しても解決法は後に提示します。
最後に注意点を。
たとえクライアントにルーター(自鯖)をIPアドレスを設定しても、
自鯖がルーターとして動作していないと、インターネット側に出ることは出来ません。
くどいようですが、あしからず。
◆サーバーにIPアドレスを設定する(/etc/rc.conf) |
自鯖([lnc0]側)はインターネット側の情報をすでに取得している事は説明しました。
ということは、設定が必要なのは「ローカルエリアネットワーク側である[fxp0]の設定」のみとなります。
もちろん、この[fxp0]は自分の環境に合わせて置き換えてください。
設定しないとならない項目は2つだけです。
「IPアドレス」そして「ネットマスク」です。
実際に自鯖にこの2つを設定してみましょう。
Server# ifconfig fxp0 inet 192.168.1.254
netmask 255.255.255.0 |
これだけで設定完了です。
と実行すると、この設定が登録されているのが分かると思います。
このIPアドレスにpingを実行して、正常に動作しているのを確認してみてください。
…しかし、このままではサーバーの電源を落としてしまうと、設定は消去されてしまいます。
そこで、ついに[/etc/rc.conf]にて設定を書き込む必要が出てきます。
[/etc/rc.conf]に関しては、今はまだ詳しい説明はしません。
このファイルはサーバー起動時に必ず読み込まれ、
書き込まれている内容に従ってサーバーの初期設定を行う、非常に大切なファイルと理解してください。
それではエディタでこのファイルを開いてみましょう。
まず「これはSysinstall(つまりインストール時の初期設定)によって設定された項目である」と注意書きがあり、
「#」で囲まれた説明文があります。
今回注目するのは、それ以下の実際に設定が書き込まれている部分です。
最初の初期設定時に[lnc0]をDHCPより自動にネットワーク情報を取得するように指定していたのであれば、
といった項目を見つける事が出来ると思います。
今回設定する項目はどこに書き込んでもいいのですが、
とりあえず分かりやすいようにこの下に書き込みます。
ifconfig_lnc0="DHCP"
ifconfig_fxp0="inet 192.168.1.254 netmask
255.255.255.0" |
と入力して保存して終了です。
ちゃんと「”(ダブルクォテーション)」で囲むのを忘れないで下さい。
この後、念のためサーバーを再起動して、pingでこのIPアドレスから応答あるか、
そしてインターネット側(たとえばヤフー)からの応答があるかをきちんと確認してください。
ここはネットワーク設定の根底に関わる部分であり、
間違いがないように充分注意して入力してください。
そして、もし自鯖とクライアントがきちんとHUBを介して接続されているのであれば、
この時点で内部ネットワークとして動作させる事が可能になります。
Windowsマシンであれば、基本的に
「マイネットワーク」アイコンを右クリックして開いたメニューにある
「プロパティ」より変更できます。
この中の変更したいネットワークカードの「TCP/IP」と書かれた項目を探して設定を書き換えます。
「TCP/IP」の項目を選択して、「プロパティ」にて設定変更できると思います。
おそらく「自動的に取得」…つまりDHCPに指定されていますので、
手動で入力可能な状態にして、「IPアドレス」「ネットマスク」
「ディフォルトゲートウェイ」「DNS(ネームサーバー)」の設定をしてください。
「IPアドレス」は説明したとおり、ここでは「192.168.1.1」か「192.168.1.2」です。
どちらを使用してもいいのですが、他のマシンと重ならないように注意して設定しましょう。
「ネットマスク」は「255.255.255.0」です。
「ディフォルトゲートウェイ」…つまりインターネットの出入り口となるサーバーは
自鯖である「192.168.1.254」です。まだ自鯖にルーター機能はありませんが、
機能を追加した時のためにあらかじめ入力しておきましょう。
「DNS(ネームサーバー)」ですが、これはまだ設定できません。
DHCPでサーバーが取得しているアドレスを見て、それを入力してもいいのですが、
ここではまだ空欄としておきます。
入力しないとエラーが出て進めないのであれば、自鯖のIPアドレスでも入力しておいて下さい。
設定を終えたら、その設定を有効にしてください。
再起動が必要なら、再起動もしてください。
最後に自鯖から、クライアントにpingを実行です。
Server# ping 192.168.1.1
PING 192.168.1.1(192.168.1.1) : 56 bytes
64 bytes from 192.168.1.1: icmp_seq=0 ttl=241
time=2.949 ms
64 bytes from 192.168.1.1: icmp_seq=1 ttl=241
time=0.821 ms |
こういった表示が出れば、自鯖とクライアントとの接続が成功している事になります。
これで、ようやくネットワーク環境が完成しました。
余談ですが、
Server# ifconfig |grep inet
inet ???.???.???.??? netmask 0x???????? broadcast
???.???.???.???
inet 192.168.1.254 netmask 0xffffff00 broadcast
192.168.1.255
inet 127.0.0.1 netmask 0xff000000 |
これで自分の持っているIPアドレスのみを確認できます。
「127.0.0.1」は上で説明したループバックアドレスであるので、無視して結構です。
ローカルのプライベートIPアドレスではない、もう一つのIPアドレス(inet)が
自分がプロバイダから受け取っているグローバルIPアドレスです。
これはDHCPで取得している以上、突然変動する事もあるので注意が必要です。
自分が受け取っているグローバルIPアドレスを知りたくなった時はこれで確認しましょう。
これ以降、ついに自鯖をルーターとして作成していくわけですが、
なぜ最初にこのネットワークの設定をしたかというと、
こうやってあらかじめネットワーク環境を作成して、動作を確認しておけば、
これ以降ルーターを作成途中にネットワークがおかしくなった場合、
その原因を特定し易くなるからです。
カーネル再構築にはリスクも伴います。
カーネル再構築で失敗してネットワーク動作がおかしくなった際、
ここまでの設定と動作確認をきちんとしているかどうかによって、
どこに問題があったのかを特定しやすくなります(経験者は語る)
では、次からは実際にルーター構築に入りたいと思います。
◆[/etc/rc.conf]でDHCPの設定をする |
ここトラブルシューティングの一つとして、[/etc/rc.conf]にDHCPを設定する方法を説明します。
この時、使用するネットワークインターフェイスは[lnc0]と仮定して説明します。
場合によっては今までこのページで説明した知識も必要になってきます。
分からない事が出てきたら、一度ここまでを読み直してもらいたいと思います。
まず[/etc/rc.conf]をエディタで開いてください。大した行数ではないと思います。
その中に
こういった「DHCP」と書かれた項目がどこにもなければ、
設定されてなかったわけであり、その場合設定をやり直さないといけません。
まずは
ifconfig_lnc0="inet ???.???.???.???
netmask ???.???.???.???" |
こういった項目がないか調べてください。
もし発見できたのであれば、その行を
と書き換えてください。追加するのではなく、書き換えないと駄目です。
この場合、きちんとドライバ自体は認識されているので、
ドライバ確認の必要はない事になります。
しかし、そうでない場合、自分のサーバーPCが認識しているLANボードのドライバ名が
分からない場合があるかも知れません。
その場合、このページの「ifconfig…ネットワークインターフェイスの確認」を読んで、
どういったドライバが使用できるか確認して下さい。
そして、[lnc0]を自分に対応したドライバ(仮に[???])に置き換えて、
と入力して、保存してください。
そして
defaultrouter="xxx.xxx.xxx.xxx" |
といった項目が存在した場合、この行を削除しておいてください。
DHCPでIP情報を取得している場合、この項目の情報も自動的に取得してます。
不要な混乱を招く事にもなるので、きっちり削除しておいて下さい。
そして、変更を保存後、再起動をかけてください。
[一つ上に戻る] |